package com.ruoyi.service;

import com.ruoyi.domain.vo.CartGoodsDTO;
import com.ruoyi.domain.vo.GoodsEvaluateVo;
import com.ruoyi.domain.vo.GoodsVo;
import com.ruoyi.system.domain.GoodsEvaluate;
import com.ruoyi.system.domain.vo.GoodsSystemVo;

import java.util.List;
import java.util.Map;

public interface IExchangeMallService {

//    获取不同类型的商品列表
    List<GoodsSystemVo> getGoodsList(Long goodsTypeId, Long pageNum, Long pageSize, String sortWay, boolean feeShipping);

    Double getUserDiscountRMB(Long userId);

    List<GoodsVo> selectHotGoodsList(Long goodsTypeId, Long pageNum, Long pageSize, String sortWay, boolean feeShipping);

    List<GoodsVo> selectTimeGoodsList(Long goodsTypeId,  Long pageNum,  Long pageSize, String sortWay, boolean feeShipping);

    List<GoodsEvaluateVo> selectGoodsEvaluateListByGoodsId(Long goodsId, Long pageNum, Long pageSize);

    List<Map<String, Object>> selectGoodsTypeList(Long goodsTypeId);

    void addCart(Long goodsId, Long userId, Long goodsCounts, String stander);

    boolean isCartExists(Long userId, Long goodsId);

    void updateCart(Long goodsId, Long userId);

    List<CartGoodsDTO> selectUserCartList(Long userId);

    void deleteCart(Long goodsId, Long userId);

    void reduceCartCounts(Long goodsId, Long userId);

    List<GoodsVo> selectGoodsByName(String goodsName, Long pageNum, Long pageSize, String sortWay, boolean feeShipping);

    GoodsVo selectGoodsByStander(Long goodsId, String stander);

    Long createOrderInfo(Long userId);

    void createOrderItem(Long orderId, CartGoodsDTO cartGoodsDTO);

    List<GoodsVo> selectRelateGoodsList(String relateGoodsId);

    void createOrderItemRelate(Long orderId, String relateGoodsId);

    List<Map<String, Object>> selectOrderShop(Long orderId);

    Map<String, Object> selectOrderListByOrderId(Long orderId);

    void payOrder(Map<String, Object> req);

    void createOrderItemNow(Long orderId, Long goodsId, Long goodsCounts, String stander);
}
